package com.abel.manager;

import java.util.List;

import com.abel.domain.DesiredPosition;
import com.abel.domain.HelpfulInformation;
import com.abel.domain.MilitaryService;
import com.abel.domain.OptionalInformation;
import com.abel.domain.PersonProfile;
import com.abel.domain.PersonSearchCriteria;
import com.abel.domain.PersonalInformation;
import com.abel.manager.exception.PersonProfileException;
import com.abel.repository.MilitaryServiceRepository;
import com.abel.repository.PersonProfileRepository;
import com.abel.repository.exception.NonExistantProfileException;

public interface PersonProfileManager
{
    /**
     * 
     * @param criteria
     * @return
     * @throws PersonProfileException
     */
    public PersonProfile getPersonProfile(PersonSearchCriteria criteria) throws PersonProfileException, NonExistantProfileException;
    
    /**
     * 
     * @param personalInformation
     * @throws PersonProfileException
     */
    public void updatePersonalInfo(PersonalInformation personalInformation) throws PersonProfileException;
    
    
    /**
     * 
     * @param optionalInformation
     * @throws PersonProfileException
     */
    public void updateOptionalInfo(OptionalInformation optionalInformation) throws PersonProfileException;
    
    /**
     * 
     * @param desiredPosition
     * @throws PersonProfileException
     */
    public void updateDesiredPositionInfo(DesiredPosition desiredPosition) throws PersonProfileException;
    
    /**
     * 
     * @param helpfulInformation
     * @throws PersonProfileException
     */
    public void updateHelpfulInfo (HelpfulInformation helpfulInformation) throws PersonProfileException;
    
    
   
    /**
     * This is injected through spring
     * @param personalProfileRepository
     * @throws PersonProfileException
     */
    public void setPersonProfileRepository(PersonProfileRepository personalProfileRepository) throws PersonProfileException;
    

    public void setMilitaryServiceRepository(MilitaryServiceRepository militaryServiceRepository);

//	public void deleteMilitaryserviceInfo(int aplId, int mltServiceId) throws PersonProfileException;
//
//	public void deleteMilitaryserviceInfo(int mltServiceId) throws PersonProfileException;
	
	public void deleteMilitaryserviceInfo(MilitaryService MilitaryService) throws PersonProfileException;

	/**
     * 
     * @param militaryService
     * @throws PersonProfileException
     */
    public void updateMilitaryserviceInfo(MilitaryService militaryService) throws PersonProfileException;
    
}
